package br.unifor.locadora.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

import br.unifor.cadeventos.entity.TipoEventos;
import br.unifor.locadora.entity.Filme;





public class FilmeDAO {

	private EntityManager em = new EntityManager() {
		
		@Override
		public Object trataResultSet(ResultSet resultSet) throws SQLException {
			
			Filme filme = new Filme();
			filme.setCodigo(resultSet.getInt("codigo"));
			filme.setTitulo(resultSet.getString("titulo"));
			filme.setGenero(resultSet.getInt("genero"));
			filme.setTipo(resultSet.getInt("tipo"));
			return filme;
		}
	};
	
	public Filme salvar(Filme filme) throws SQLException {

		String sql = " insert into filme(codigo, titulo, genero, tipo) values (?) "
				+ " returning codigo, titulo, genero, tipo ";
		return (Filme)em.getSingleResult(sql, filme.getCodigo, filme.getTitulo, filme.getGenero, filme.getTipo());
	}
	
	public void atualizar(Filme filme) throws SQLException {
		String sql = "update filme set codigo, titulo, genero, tipo where codigo = ?, titulo = ?, genero = ?, tipo = ?";
		em.executeQuery(sql, filme.getCodigo());
		
	}
	
	public void excluirPorCodigo(Integer codigo) throws SQLException {
		String sql = "delete from filme where codigo = ?, titulo = ?, genero = ?, tipo = ?";
		em.executeQuery(sql, codigo);
	} 

	public void excluirTodos() throws SQLException {

		String sql = "delete from filme";
		em.executeQuery(sql);
	}

	public Filme buscarPorFilme(Integer filme) throws SQLException {
		
		String sql = "select codigo, titulo, genero, tipo "
				+ "from filme where codigo = ?, titulo = ?, genero = ?, tipo = ?";
		return (Filme)em.getSingleResult(sql, codigo);
	}
	
	@SuppressWarnings("unchecked")
	public List<Filme> buscarPorDescricao(Filme filme) throws SQLException {
		String sql = "select odigo, titulo, genero, tipo descricao from filme where codigo, titulo, genero, tipo ilike ?";
		return (List<Filme>)em.getResultList(sql,filme.getCodigo, filme.getTitulo, filme.getGenero, filme.getTipo());
	}
	
	@SuppressWarnings("unchecked")
	public List<Filme> buscarTodos() throws SQLException{
		String sql = "select select codigo, titulo, genero, tipo from filme";
		return (List<Filme>)em.getResultList(sql);
	}

	
}
